class  Father{
    constructor(){
        console.log('创建对象都要经过我');
        //默认返回 this
    }
    toString(){
        console.log('实际上我是被定义在Father.prototype上的');
    }
}

let mm = new Father()//创建对象都要经过我

console.log(mm.__proto__===Father.prototype);//true
console.log(typeof Father);//function
console.log(Object.getPrototypeOf(mm)===Father.prototype);//true
console.log(Object.getOwnPropertyNames(Father.prototype));//['constructor','toString']

/**
 * 类实际上就是function的语法糖
 * Object.getPrototypeOf(obj)与obj.__proto__是等价的
 * 普通的方法实际上是被定义在构造函数的原型对象上
 * 构造函数是不可枚举的，而普通函数是可枚举的
 * for ....in ,Object.keys(),JSON.stringfy() 只能作用于对象的可枚举属性
 */
